This invention is generally related to the field of clustering systems and remote mirroring technology.
The use of clustering systems to accomplish fault-tolerance and/or load-balancing is becoming increasingly popular. Generally speaking, a clustering system may provide redundant resources so that if one portion of the system experiences failure, another portion can take over affected tasks or otherwise provide recovery from the failure. Also, a clustering system may use its redundant resources to process tasks in a more distributed manner, allowing different portions of the system to work inparallel in accomplishing tasks.
A typical clustering system may be made up of two or more nodes, each having its own processing and storage capabilities. In one particular use of a clustering system, a primary node may comprise of a server and associated storage devices, while a secondary node may also comprise of another server and associated storage devices. The secondary node may be created to be similar to the primary node, in terms of processing, storage, and other capabilities. Here, the clustering system may maintain exact correspondence between the data storage of the primary node and the data storage of the secondary node, such that any write or read to data storage at the primary node is replicated at the secondary node. If the primary node fails as it performs its various tasks, the secondary node may take over the tasks performed by the primary node. For example, if a web server that is configured as a primary node in a clustering system fails for some reason, a secondary node may take over and serve web server functions in place of the failed primary node. A web site supported by such a system thus continues to operate with little or no down time. Web site visitors may continue to visit the associated web site as if no failure had occurred. In this example, providing a primary and a secondary node of similar capabilities allows the secondary node to be capable of taking over the tasks previously performed by the primary node.
In other situations, the secondary node may have lesser capabilities than the primary node. For example, if the secondary node is only designed to temporarily take over the tasks of the primary node, or if the secondary node is only designed to record periodic snap shots of the data storage of the primary node, it may be sufficient to create the secondary node with lesser capabilities. This may be especially true if the cost associated with creating a similarly capable secondary node is to be avoided, or if failure of the primary node is not expected to extend beyond a certain amount of time. Thus, depending on the situation, the required capabilities of the secondary node may vary.
The correspondence between the data storage of a primary node and the data storage of a secondary node storage may also be referred to as remote mirroring. This is especially the case if the data storage of the primary node is at a geographically distant location from the data storage of the secondary node. Remote mirroring may be carried out by different portions of a system. For example, in host-based remote mirroring, a host, such as a server, may be principally responsible for maintaining the correspondence between the data storage of the primary node and the data storage of the secondary node. In storage-based remote mirroring, a storage system, such as a storage area network (SAN), may be principally responsible for maintaining such correspondence. Depending on the implementation, remote mirroring may require separate software and equipment installation and/or configuration, in addition to that required by other parts of the clustering system.
Currently, in order to realize the many advantages of a clustering system, the multiple nodes of a clustering system must be established by a system administrator. For example, in a clustering system having a primary and a secondary node, the system administrator must decide exactly what should be the processing, storage, and other capabilities of the secondary node, install or identify available resources meeting those capabilities, install required software, and perform necessary configurations to set up the clustering system. These steps involve factors that can be overwhelmingly complex and difficult to analyze for the system administrator, even if that person is an expert. Thus, the administrator may only be able to make a rough guess, in an ad hoc manner, as to what storage capability is needed for the secondary node. As discussed above, the required storage capability of the secondary node may vary from situation to situation, and it may not always be ideal to simply mimic the storage capability of the primary node.
Furthermore, after the desired processing, storage, and other capabilities of the secondary node is decided, the administrator must go about looking for existing equipment in the system that fit the description, or install such equipment. In a large system having many different components, it may be extremely difficult and time-consuming for an administrator to search through all available resources in order to find the appropriate equipment. Finally, after the appropriate resources are decided and located, software installation and configuration may take additional time and effort. Thus, while clustering systems provide import fault-tolerance and/or load-balancing capabilities, the deployment of clustering systems remains largely a difficult and imprecise undertaking.